home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / MOS / XBIOS.I < prev    next >
Encoding:
Modula Implementation  |  1991-10-20  |  13.9 KB  |  674 lines

  1. IMPLEMENTATION MODULE XBIOS;
  2. (*$Z-,S-,N+,R-,L-*)
  3. (*$Y+*)
  4.  
  5. (*
  6. TT 20.07.90: ConfigurePrinter: MOVE.W statt MOVE.L, SET müßte nun stimmen
  7. TT 21.08.90: BlitMode & FlopRate neu
  8. TT 08.04.91: SetKeyTable funktioniert nun
  9. TT 20.10.91: $M- entfernt.
  10. *)
  11.  
  12. FROM SYSTEM IMPORT ASSEMBLER;
  13.  
  14. FROM SYSTEM IMPORT ADDRESS, LONGWORD, WORD, CAST, BYTE;
  15.  
  16.  
  17. PROCEDURE InitMouse (mtyp: MouseType; VAR parm: ParamBlk; serveproc: ADDRESS);
  18.   BEGIN
  19.     ASSEMBLER
  20.         MOVE.L  -(A3),-(A7)
  21.         MOVE.L  -(A3),-(A7)
  22.         MOVE.W  -(A3),-(A7)
  23.         MOVE    #0,-(A7)
  24.         TRAP    #14
  25.         ADDA.W  #12,A7
  26.     END
  27.   END InitMouse;
  28.  
  29. PROCEDURE ScreenPhysicalBase (): ADDRESS;
  30.   BEGIN
  31.     ASSEMBLER
  32.         MOVE    #2,-(A7)
  33.         TRAP    #14
  34.         ADDQ.L  #2,A7
  35.         MOVE.L  D0,(A3)+
  36.     END
  37.   END ScreenPhysicalBase;
  38.  
  39. PROCEDURE ScreenLogicalBase (): ADDRESS;
  40.   BEGIN
  41.     ASSEMBLER
  42.         MOVE    #3,-(A7)
  43.         TRAP    #14
  44.         ADDQ.L  #2,A7
  45.         MOVE.L  D0,(A3)+
  46.     END
  47.   END ScreenLogicalBase;
  48.  
  49. PROCEDURE GetResolution (): INTEGER;
  50.   BEGIN
  51.     ASSEMBLER
  52.         MOVE    #4,-(A7)
  53.         TRAP    #14
  54.         ADDQ.L  #2,A7
  55.         MOVE.W  D0,(A3)+
  56.     END
  57.   END GetResolution;
  58.  
  59. PROCEDURE SetScreenBase (logAddr, physAddr: ADDRESS; res: INTEGER);
  60.   BEGIN
  61.     ASSEMBLER
  62.         MOVE.L  -(A3),-(A7)
  63.         BNE     OK1
  64.         SUBQ.L  #1,(A7)
  65.       OK1
  66.         MOVE.L  -(A3),-(A7)
  67.         BNE     OK2
  68.         SUBQ.L  #1,(A7)
  69.       OK2
  70.         MOVE.W  -(A3),-(A7)
  71.         MOVE    #5,-(A7)
  72.         TRAP    #14
  73.         ADDA.W  #12,A7
  74.     END
  75.   END SetScreenBase;
  76.  
  77. PROCEDURE SetPalette (VAR parm: Palette);
  78.   BEGIN
  79.     ASSEMBLER
  80.         MOVE.L  -(A3),-(A7)
  81.         MOVE    #6,-(A7)
  82.         TRAP    #14
  83.         ADDQ.L  #6,A7
  84.     END
  85.   END SetPalette;
  86.  
  87. PROCEDURE SetColour (no, col: CARDINAL): CARDINAL;
  88.   BEGIN
  89.     ASSEMBLER
  90.         MOVE.L  -(A3),-(A7)
  91.         MOVE    #7,-(A7)
  92.         TRAP    #14
  93.         ADDQ.L  #6,A7
  94.         MOVE.W  D0,(A3)+
  95.     END
  96.   END SetColour;
  97.  
  98. PROCEDURE rw;
  99.   
  100.   BEGIN
  101.     ASSEMBLER
  102.         MOVE.L  -(A3),-(A7)
  103.         MOVE.L  -(A3),-(A7)
  104.         MOVE.W  -(A3),-(A7)
  105.         CLR.L   -(A7)
  106.         MOVE.L  -(A3),-(A7)
  107.         MOVE    D0,-(A7)
  108.         TRAP    #14
  109.         ADDA.W  #20,A7
  110.         MOVE.W  D0,(A3)+
  111.     END
  112.   END rw;
  113.   
  114.  
  115. PROCEDURE FloppyRead (buffer: ADDRESS; drive0, sector,
  116.                       track, side, count: CARDINAL): INTEGER;
  117.   
  118.   BEGIN
  119.     ASSEMBLER
  120.         MOVEQ   #8,D0
  121.         JMP     rw
  122.     END
  123.   END FloppyRead;
  124.   
  125.  
  126. PROCEDURE FloppyWrite (buffer: ADDRESS; drive0, sector,
  127.                        track, side, count: CARDINAL): INTEGER;
  128.   
  129.   BEGIN
  130.     ASSEMBLER
  131.         MOVEQ   #9,D0
  132.         JMP     rw
  133.     END
  134.   END FloppyWrite;
  135.   
  136.  
  137. PROCEDURE FloppyFormat (buffer: ADDRESS; drive0, sectors, track,
  138.                         side, interleave, virgin: CARDINAL): INTEGER;
  139.   
  140.   BEGIN
  141.     ASSEMBLER
  142.         MOVE.W  -(A3),-(A7)
  143.         MOVE.L  #$87654321,-(A7)
  144.         MOVE.L  -(A3),-(A7)
  145.         MOVE.L  -(A3),-(A7)
  146.         MOVE.W  -(A3),-(A7)
  147.         CLR.L   -(A7)
  148.         MOVE.L  -(A3),-(A7)
  149.         MOVE    #10,-(A7)
  150.         TRAP    #14
  151.         ADDA.W  #26,A7
  152.         MOVE.W  D0,(A3)+
  153.     END
  154.   END FloppyFormat;
  155.   
  156.  
  157. PROCEDURE MIDIWS (VAR str: ARRAY OF BYTE; len: CARDINAL);
  158.   
  159.   BEGIN
  160.     ASSEMBLER
  161.         MOVE.W  -(A3),D0
  162.         SUBQ.L  #2,A3
  163.         MOVE.L  -(A3),-(A7)
  164.         MOVE.W  D0,-(A7)
  165.         MOVE    #12,-(A7)
  166.         TRAP    #14
  167.         ADDQ.L  #8,A7
  168.     END
  169.   END MIDIWS;
  170.   
  171.  
  172. PROCEDURE MFPint (no: CARDINAL; proc: PROC);
  173.   BEGIN
  174.     ASSEMBLER
  175.         MOVE.L  -(A3),-(A7)
  176.         MOVE.W  -(A3),-(A7)
  177.         MOVE    #13,-(A7)
  178.         TRAP    #14
  179.         ADDQ.L  #8,A7
  180.     END
  181.   END MFPint;
  182.  
  183. PROCEDURE IORec (dev: SerialDevice): IORECPTR;
  184.   BEGIN
  185.     ASSEMBLER
  186.         MOVE.W  -(A3),-(A7)
  187.         MOVE    #14,-(A7)
  188.         TRAP    #14
  189.         ADDQ.L  #4,A7
  190.         MOVE.L  D0,(A3)+
  191.     END
  192.   END IORec;
  193.  
  194. PROCEDURE ConfigureRS232 (baud: SerialSpeed; handshake: FlowFlavor;
  195.                           ucr, rsr, tsr, scr: INTEGER);
  196.   BEGIN
  197.     ASSEMBLER
  198.         MOVE.L  -(A3),-(A7)
  199.         MOVE.L  -(A3),-(A7)
  200.         MOVE.L  -(A3),-(A7)
  201.         MOVE    #15,-(A7)
  202.         TRAP    #14
  203.         ADDA.W  #14,A7
  204.     END
  205.   END ConfigureRS232;
  206.  
  207. PROCEDURE SetKeyTable (VAR unshift, shift, caps: KeyTransPtr): KeyTablePtr;
  208.   BEGIN
  209.     ASSEMBLER
  210.         ; oops - hier hätte es kein VAR-Parm sein sollen!
  211.         MOVE.L  -(A3),A0
  212.         MOVE.L  (A0),-(A7)
  213.         MOVE.L  -(A3),A0
  214.         MOVE.L  (A0),-(A7)
  215.         MOVE.L  -(A3),A0
  216.         MOVE.L  (A0),-(A7)
  217.         MOVE    #16,-(A7)
  218.         TRAP    #14
  219.         ADDA.W  #14,A7
  220.         MOVE.L  D0,(A3)+
  221.     END
  222.   END SetKeyTable;
  223.  
  224. PROCEDURE Random (): LONGCARD;
  225.   BEGIN
  226.     ASSEMBLER
  227.         MOVE    #17,-(A7)
  228.         TRAP    #14
  229.         ADDQ.L  #2,A7
  230.         MOVE.L  D0,(A3)+
  231.     END
  232.   END Random;
  233.  
  234. PROCEDURE PrototypeBootSector (buffer: ADDRESS; serial: LONGINT;
  235.                                dtype, exec: INTEGER);
  236.   BEGIN
  237.     ASSEMBLER
  238.         MOVE.L  -(A3),-(A7)
  239.         MOVE.L  -(A3),-(A7)
  240.         MOVE.L  -(A3),-(A7)
  241.         MOVE    #18,-(A7)
  242.         TRAP    #14
  243.         ADDA.W  #14,A7
  244.     END
  245.   END PrototypeBootSector;
  246.  
  247. PROCEDURE FloppyVerify (buffer: ADDRESS; drive0, sector,
  248.                         track, side, count: CARDINAL): INTEGER;
  249.   
  250.   BEGIN
  251.     ASSEMBLER
  252.         MOVEQ   #19,D0
  253.         JMP     rw
  254.     END
  255.   END FloppyVerify;
  256.   
  257.  
  258. PROCEDURE ScreenDump ();
  259.   BEGIN
  260.     ASSEMBLER
  261.         MOVE    #20,-(A7)
  262.         TRAP    #14
  263.         ADDQ.L  #2,A7
  264.     END
  265.   END ScreenDump;
  266.  
  267. PROCEDURE ConfigureCursor (mode: INTEGER; rate: INTEGER): INTEGER;
  268.   BEGIN
  269.     ASSEMBLER
  270.         MOVE.L  -(A3),-(A7)
  271.         MOVE    #21,-(A7)
  272.         TRAP    #14
  273.         ADDQ.L  #6,A7
  274.         MOVE.W  D0,(A3)+
  275.     END
  276.   END ConfigureCursor;
  277.  
  278. PROCEDURE SetDateTime (time: LONGCARD);
  279.   BEGIN
  280.     ASSEMBLER
  281.         MOVE.L  -(A3),-(A7)
  282.         MOVE    #22,-(A7)
  283.         TRAP    #14
  284.         ADDQ.L  #6,A7
  285.     END
  286.   END SetDateTime;
  287.  
  288. PROCEDURE GetDateTime (): LONGCARD;
  289.   BEGIN
  290.     ASSEMBLER
  291.         MOVE    #23,-(A7)
  292.         TRAP    #14
  293.         ADDQ.L  #2,A7
  294.         MOVE.L  D0,(A3)+
  295.     END
  296.   END GetDateTime;
  297.  
  298. PROCEDURE BiosKeys ();
  299.   BEGIN
  300.     ASSEMBLER
  301.         MOVE    #24,-(A7)
  302.         TRAP    #14
  303.         ADDQ.L  #2,A7
  304.     END
  305.   END BiosKeys;
  306.  
  307. PROCEDURE KeyboardWS (VAR str: ARRAY OF BYTE; len: CARDINAL);
  308.   
  309.   BEGIN
  310.     ASSEMBLER
  311.         MOVE.W  -(A3),D0
  312.         SUBQ.L  #2,A3
  313.         MOVE.L  -(A3),-(A7)
  314.         MOVE.W  D0,-(A7)
  315.         MOVE    #25,-(A7)
  316.         TRAP    #14
  317.         ADDQ.L  #8,A7
  318.     END
  319.   END KeyboardWS;
  320.   
  321.  
  322. PROCEDURE DisableInterrupt (no: CARDINAL);
  323.   BEGIN
  324.     ASSEMBLER
  325.         MOVE.W  -(A3),-(A7)
  326.         MOVE    #26,-(A7)
  327.         TRAP    #14
  328.         ADDQ.L  #4,A7
  329.     END
  330.   END DisableInterrupt;
  331.  
  332. PROCEDURE EnableInterrupt (no: CARDINAL);
  333.   BEGIN
  334.     ASSEMBLER
  335.         MOVE.W  -(A3),-(A7)
  336.         MOVE    #27,-(A7)
  337.         TRAP    #14
  338.         ADDQ.L  #4,A7
  339.     END
  340.   END EnableInterrupt;
  341.  
  342. PROCEDURE GIRead (reg: CARDINAL): CARDINAL;
  343.   
  344.   BEGIN
  345.     ASSEMBLER
  346.         MOVE.W  -(A3),D0
  347.         ANDI    #$7F,D0         ; lesen
  348.         MOVE.W  D0,-(A7)
  349.         CLR     -(A7)
  350.         MOVE    #28,-(A7)
  351.         TRAP    #14
  352.         ADDQ.L  #6,A7
  353.         MOVE    D0,(A3)+
  354.     END
  355.   END GIRead;
  356.   
  357.  
  358. PROCEDURE GIWrite (reg: CARDINAL; data: CARDINAL);
  359.   
  360.   BEGIN
  361.     ASSEMBLER
  362.         MOVE.W  -(A3),D1
  363.         MOVE.W  -(A3),D0
  364.         ORI     #$80,D0         ; schreiben
  365.         MOVE.W  D0,-(A7)
  366.         MOVE.W  D1,-(A7)
  367.         MOVE    #28,-(A7)
  368.         TRAP    #14
  369.         ADDQ.L  #6,A7
  370.     END
  371.   END GIWrite;
  372.   
  373.  
  374. PROCEDURE GIOffBit (bitno: CARDINAL);
  375.   BEGIN
  376.     ASSEMBLER
  377.         MOVE.W  -(A3),-(A7)
  378.         MOVE    #29,-(A7)
  379.         TRAP    #14
  380.         ADDQ.L  #4,A7
  381.     END
  382.   END GIOffBit;
  383.  
  384. PROCEDURE GIOnBit (bitno: CARDINAL);
  385.   BEGIN
  386.     ASSEMBLER
  387.         MOVE.W  -(A3),-(A7)
  388.         MOVE    #30,-(A7)
  389.         TRAP    #14
  390.         ADDQ.L  #4,A7
  391.     END
  392.   END GIOnBit;
  393.  
  394. PROCEDURE SetTimerInterrupt (which: Timer; ctrl, data: CARDINAL; proc: PROC);
  395.   BEGIN
  396.     ASSEMBLER
  397.         MOVE.L  -(A3),-(A7)
  398.         MOVE.L  -(A3),-(A7)
  399.         MOVE.W  -(A3),-(A7)
  400.         MOVE    #31,-(A7)
  401.         TRAP    #14
  402.         ADDA.W  #12,A7
  403.     END
  404.   END SetTimerInterrupt;
  405.  
  406. PROCEDURE DoSound (data: ADDRESS);
  407.   BEGIN
  408.     ASSEMBLER
  409.         MOVE.L  -(A3),-(A7)
  410.         MOVE    #32,-(A7)
  411.         TRAP    #14
  412.         ADDQ.L  #6,A7
  413.     END
  414.   END DoSound;
  415.  
  416. PROCEDURE ConfigurePrinter (data: PrtConfigSet): PrtConfigSet;
  417.   BEGIN
  418.     ASSEMBLER
  419.         MOVE.W  -(A3),-(A7)
  420.         MOVE    #33,-(A7)
  421.         TRAP    #14
  422.         ADDQ.L  #4,A7
  423.         MOVE.W  D0,(A3)+
  424.     END
  425.   END ConfigurePrinter;
  426.  
  427. PROCEDURE KeyboardVectors (): KBVectorPtr;
  428.   BEGIN
  429.     ASSEMBLER
  430.         MOVE    #34,-(A7)
  431.         TRAP    #14
  432.         ADDQ.L  #2,A7
  433.         MOVE.L  D0,(A3)+
  434.     END
  435.   END KeyboardVectors;
  436.  
  437. PROCEDURE KeyboardRate (delay, repeat: INTEGER): CARDINAL;
  438.   BEGIN
  439.     ASSEMBLER
  440.         MOVE.L  -(A3),-(A7)
  441.         MOVE    #35,-(A7)
  442.         TRAP    #14
  443.         ADDQ.L  #6,A7
  444.         MOVE.W  D0,(A3)+
  445.     END
  446.   END KeyboardRate;
  447.  
  448. PROCEDURE VSync ();
  449.   BEGIN
  450.     ASSEMBLER
  451.         MOVE    #37,-(A7)
  452.         TRAP    #14
  453.         ADDQ.L  #2,A7
  454.     END
  455.   END VSync;
  456.  
  457. PROCEDURE SuperExec (proc: PROC);
  458.   BEGIN
  459.     ASSEMBLER
  460.         MOVE.L  -(A3),-(A7)
  461.         MOVE    #38,-(A7)
  462.         TRAP    #14
  463.         ADDQ.L  #6,A7
  464.     END
  465.   END SuperExec;
  466.  
  467. PROCEDURE PuntAES ();
  468.   BEGIN
  469.     ASSEMBLER
  470.         MOVE    #39,-(A7)
  471.         TRAP    #14
  472.         ADDQ.L  #2,A7
  473.     END
  474.   END PuntAES;
  475.  
  476. PROCEDURE BlitMode (flag: INTEGER): BITSET;
  477.   BEGIN
  478.     ASSEMBLER
  479.         MOVE.W  -(A3),-(SP)
  480.         MOVE.W  #64,-(SP)
  481.         TRAP    #14
  482.         ADDQ.L  #4,SP
  483.         MOVE.W  D0,(A3)+
  484.     END;
  485.   END BlitMode;
  486.  
  487. PROCEDURE FlopRate (drive: CARDINAL; rate: INTEGER): INTEGER;
  488.   BEGIN
  489.     ASSEMBLER
  490.         ; zuerst TOS-Version ermitteln
  491.         PEA     tv(PC)
  492.         MOVE    #38,-(A7)
  493.         TRAP    #14
  494.         ADDQ.L  #6,A7
  495.         CMPI    #$0100,D0
  496.         BEQ     tos10
  497.         CMPI    #$0102,D0
  498.         BEQ     tos12
  499.         
  500.         MOVE.L  -(A3),-(A7)
  501.         MOVE    #41,-(A7)
  502.         TRAP    #14
  503.         ADDQ.L  #6,A7
  504.         MOVE.W  D0,(A3)+
  505.         RTS
  506.      
  507.      tos10
  508.         MOVE.W  #$A09,A0
  509.         BRA     cont
  510.      tos12
  511.         MOVE.W  #$A4F,A0
  512.      cont
  513.         MOVE.W  -(A3),D0
  514.         TST     -(A3)
  515.         BEQ     drvA
  516.         ADDQ.L  #4,A0   ; drive B
  517.      drvA
  518.         TST.W   D0
  519.         BMI     getOnly
  520.         MOVE.B  D0,(A0)
  521.      getOnly
  522.         MOVEQ   #0,D0
  523.         MOVE.B  (A0),D0
  524.         MOVE.W  D0,(A3)+
  525.         RTS
  526.         
  527.      tv MOVE.L  $4F2,A0
  528.         MOVE.W  2(A0),D0
  529.     END
  530.   END FlopRate;
  531.  
  532. (* TT-Funktionen: *)
  533.  
  534. PROCEDURE DMAread (sector: LONGCARD; count: CARDINAL; buffer: ADDRESS;
  535.                    devNo: CARDINAL): INTEGER;
  536.   BEGIN
  537.     ASSEMBLER
  538.         MOVE.L  -(A3),-(A7)
  539.         MOVE.L  -(A3),-(A7)
  540.         MOVE.L  -(A3),-(A7)
  541.         MOVE    #$2A,-(A7)
  542.         TRAP    #14
  543.         ADDA.W  #14,A7
  544.         MOVE    D0,(A3)+
  545.     END
  546.   END DMAread;
  547.  
  548. PROCEDURE DMAwrite (sector: LONGCARD; count: CARDINAL; buffer: ADDRESS;
  549.                    devNo: CARDINAL): INTEGER;
  550.   BEGIN
  551.     ASSEMBLER
  552.         MOVE.L  -(A3),-(A7)
  553.         MOVE.L  -(A3),-(A7)
  554.         MOVE.L  -(A3),-(A7)
  555.         MOVE    #$2B,-(A7)
  556.         TRAP    #14
  557.         ADDA.W  #14,A7
  558.         MOVE    D0,(A3)+
  559.     END
  560.   END DMAwrite;
  561.  
  562. PROCEDURE NVMaccess (op, start, count: CARDINAL; buffer: ADDRESS): INTEGER;
  563.   BEGIN
  564.     ASSEMBLER
  565.         MOVE.L  -(A3),-(A7)
  566.         MOVE.L  -(A3),-(A7)
  567.         MOVE.W  -(A3),-(A7)
  568.         MOVE    #$2E,-(A7)
  569.         TRAP    #14
  570.         ADDA.W  #12,A7
  571.         MOVE    D0,(A3)+
  572.     END
  573.   END NVMaccess;
  574.  
  575. PROCEDURE Bconmap (devNo: WORD): LONGWORD;
  576.   BEGIN
  577.     ASSEMBLER
  578.         MOVE.W  -(A3),-(A7)
  579.         MOVE    #$2C,-(A7)
  580.         TRAP    #14
  581.         ADDQ.L  #4,A7
  582.         MOVE.L  D0,(A3)+
  583.     END
  584.   END Bconmap;
  585.  
  586. PROCEDURE EsetShift (shftMode: WORD): WORD;
  587.   BEGIN
  588.     ASSEMBLER
  589.         MOVE.W  -(A3),-(A7)
  590.         MOVE    #80,-(A7)
  591.         TRAP    #14
  592.         ADDQ.L  #4,A7
  593.         MOVE.W  D0,(A3)+
  594.     END
  595.   END EsetShift;
  596.  
  597. PROCEDURE EgetShift (): WORD;
  598.   BEGIN
  599.     ASSEMBLER
  600.         MOVE    #81,-(A7)
  601.         TRAP    #14
  602.         ADDQ.L  #2,A7
  603.         MOVE.W  D0,(A3)+
  604.     END
  605.   END EgetShift;
  606.  
  607. PROCEDURE EsetBank (bankNum: INTEGER): INTEGER;
  608.   BEGIN
  609.     ASSEMBLER
  610.         MOVE.W  -(A3),-(A7)
  611.         MOVE    #82,-(A7)
  612.         TRAP    #14
  613.         ADDQ.L  #4,A7
  614.         MOVE.W  D0,(A3)+
  615.     END
  616.   END EsetBank;
  617.  
  618. PROCEDURE EsetColor (colorNum, color: INTEGER): INTEGER;
  619.   BEGIN
  620.     ASSEMBLER
  621.         MOVE.L  -(A3),-(A7)
  622.         MOVE    #83,-(A7)
  623.         TRAP    #14
  624.         ADDQ.L  #6,A7
  625.         MOVE.W  D0,(A3)+
  626.     END
  627.   END EsetColor;
  628.  
  629. PROCEDURE EsetPalette (colorNum, count: INTEGER; palettePtr: ADDRESS);
  630.   BEGIN
  631.     ASSEMBLER
  632.         MOVE.L  -(A3),-(A7)
  633.         MOVE.L  -(A3),-(A7)
  634.         MOVE    #84,-(A7)
  635.         TRAP    #14
  636.         ADDA.W  #10,A7
  637.     END
  638.   END EsetPalette;
  639.  
  640. PROCEDURE EgetPalette (colorNum, count: INTEGER; palettePtr: ADDRESS);
  641.   BEGIN
  642.     ASSEMBLER
  643.         MOVE.L  -(A3),-(A7)
  644.         MOVE.L  -(A3),-(A7)
  645.         MOVE    #85,-(A7)
  646.         TRAP    #14
  647.         ADDA.W  #10,A7
  648.     END
  649.   END EgetPalette;
  650.  
  651. PROCEDURE EsetGray (switch: INTEGER): INTEGER;
  652.   BEGIN
  653.     ASSEMBLER
  654.         MOVE.W  -(A3),-(A7)
  655.         MOVE    #86,-(A7)
  656.         TRAP    #14
  657.         ADDQ.L  #4,A7
  658.         MOVE.W  D0,(A3)+
  659.     END
  660.   END EsetGray;
  661.  
  662. PROCEDURE EsetSmear (switch: INTEGER): INTEGER;
  663.   BEGIN
  664.     ASSEMBLER
  665.         MOVE.W  -(A3),-(A7)
  666.         MOVE    #87,-(A7)
  667.         TRAP    #14
  668.         ADDQ.L  #4,A7
  669.         MOVE.W  D0,(A3)+
  670.     END
  671.   END EsetSmear;
  672.  
  673. END XBIOS.
  674.